Exercices en langage C++ by Claude Delannoy
Auteur:Claude Delannoy [Delannoy, Claude]
La langue: fra
Format: epub
Tags: Informatique
Éditeur: O'Reilly
Publié: 2007-07-05T09:11:40+00:00
exos_c++.book Page 167 Jeudi, 5. juillet 2007 11:10 11
chapitre n° 11
Surdéfinition d’opérateurs
main()
{ set_int ens(10) ;
ens < 25 < 2 < 25 < 3 ;
cout << (ens[25]) << " " << (ens[5]) << "\n" ;
}
1 0
Exercice 89
Énoncé
Soit une classe vecteur3d définie comme suit :
class vecteur3d
{ float v [3] ;
public :
vecteur3d (float c1=0.0, float c2=0.0, float c3=0.0)
{ v[0] = c1 ; v[1] = c2 ; v[2] = c3 ;
}
// à compléter
} ;
Définir l’opérateur [] de manière que :
• il permette d’accéder « normalement » à un élément d’un objet non constant de type
vecteur3d , et cela aussi bien dans une expression qu’en opérande de gauche d’une
affectation ;
• il ne permette que la consultation (et non la modification) d’un objet constant de type
vecteur3d (autrement dit, si v est un tel objet, une instruction de la forme v[i] = ...
devra être rejetée à la compilation).
Rappelons que lorsque l’on définit des objets constants (qualificatif const), il n’est pas possible de leur appliquer une fonction membre publique, sauf si cette dernière a été déclarée avec le
qualificatif const (auquel cas, elle peut indifféremment être utilisée avec des objets constants ou non constants). Ici, nous devons donc définir une fonction membre constante de nom
operator
[].
Par ailleurs, pour qu’une affectation de la forme v[i] = ... soit interdite, il est nécessaire que notre opérateur renvoie son résultat par valeur (et non par adresse comme on a généralement l’habitude de le faire).
© Éditions Eyrolles
167
exos_c++.book Page 168 Jeudi, 5. juillet 2007 11:10 11
Exercices en langage C++
Dans ces conditions, on voit qu’il est nécessaire de prévoir deux fonctions membre différen-
tes, pour traiter chacun des deux cas : objet constant ou objet non constant. Le choix de la
« bonne fonction » sera assuré par le compilateur, selon la présence ou l’absence de l’attribut const pour l’objet concerné.
Voici la définition complète de notre classe, accompagnée de la définition des deux fonctions
operator [] :
class vecteur3d
{ float v [3] ;
public :
vecteur3d (float c1=0.0, float c2=0.0, float c3=0.0)
{ v[0] = c1 ; v[1] = c2 ; v[2] = c3 ;
}
float operator [] (int) const ; // [] pour un vecteur constant
float & operator [] (int) ; // [] pour un vecteur non constant
} ;
Télécharger
Ce site ne stocke aucun fichier sur son serveur. Nous ne faisons qu'indexer et lier au contenu fourni par d'autres sites. Veuillez contacter les fournisseurs de contenu pour supprimer le contenu des droits d'auteur, le cas échéant, et nous envoyer un courrier électronique. Nous supprimerons immédiatement les liens ou contenus pertinents.
Exercices en langage C++ by Claude Delannoy(1213)
Mort à crédit by Louis-Ferdinand Céline(1176)
JavaScript pour les Nuls grand format, 2e édition (French Edition) by Eva HOLLAND & Chris MINNICK(1163)
marginal by collectif(1140)
La philosophie du langage by Histoire(1073)
Le Rouge et le Noir by Un livre Un film(1072)
Le Seigneur de Bombay by Vikram Chandra(1066)
Guide pour investir by Robert T. Kiyosaki(1056)
La Gaule by Histoire de France - Livres(1017)
Programmer en langage C by Claude Delannoy(1016)
EXCEL VBA: Guide débutant étape par étape du langage de programmation excel (French Edition) by Jason Jay(1001)
C++ pour les programmeurs C by Claude Delannoy(993)
La pâtisserie by Inconnu(e)(983)
Les grands philosophes by Collectif(961)
Actes by La Bible(955)
La vie de nos morts by Inconnu(e)(938)
La vie secrète des chats by La vie secrète des chats (2014)(907)
Programmation HTML5 avec CSS3 Pour les Nuls (French Edition) by Ed TITTEL & Chris MINNICK(900)
Apprentissage facile Structures de données et algorithmes Java: Apprenez les structures de données et les algorithmes de manière graphique et simple (French Edition) by hu yang(816)